package gek.uni.aspirant.ocl.parser.mptree.tree.utils;

import java.util.regex.Pattern;

public class OfflineUtils {
  
  /**
   * Создает имя переменной Prolog'а, соответствующей переменной OCL
   * @param oclVariableName - имя переменной OCL
   * @return имя переменной Prolog'а, соответствующей переменной OCL
   */
  public static String createPrologVariableName(String oclVariableName) {
    StringBuilder result = new StringBuilder();
    if (oclVariableName.startsWith("_"))
      result.append("_").append(oclVariableName);
    else {
      boolean startWithUpper = Pattern.matches("^[A-Z].*", oclVariableName);
      if (startWithUpper)
        result.append("_").append(oclVariableName);
      else {
        boolean startWithDown = Pattern.matches("^[a-z].*", oclVariableName);
        if (startWithDown) {
          String firstLetter = oclVariableName.substring(0, 1).toUpperCase();
          String otherLetters = oclVariableName.substring(1);
          result.append(firstLetter).append(otherLetters);
        }
      }

    }

    return result.toString();

  }
}
